#include <iostream>

class grandfather
{
public:
	int dataA = 10;
	int dataB = 11;

	void funcA()
	{
		dataA++;
		dataB--;
	}
};

class father1 : virtual public grandfather
{
public:
	int dataC = 12;

	father1()
	{
		funcA();
	}
};

class father2 : virtual public grandfather
{
public:
	int dataD = 13;

	father2()
	{
		funcA();
	}
};

class child : public father2, public father1
{
public:
	int dataE = 14;
};

int main()
{
	child ch;
	std::cout << ch.dataA << " " << ch.dataB; 
	return 0;
}
//
//
//
// 

//class A
//{
//private:
//	int a;
//public:
//
//	A(){/*...*/}
//	A(int val){/*...*/}
//	A(const A& val){/*...*/}
//
//	void Set_A(int val)
//	{
//		a = val;
//	}
//};
//
//int main()
//{
//	A a;
//	a.Set_A(1);
//	return 0;
//}

//#include <iostream>
//class parent
//{
//public:
//	void func()
//	{
//		std::cout << "i am parent!" << std::endl;
//	}
//};
//
//class child :public parent
//{
//public:
//	void func()
//	{
//		std::cout << "i am child!" << std::endl;;
//	}
//};
//
//void who_are_you(parent& obj)
//{
//	obj.func();
//}
//int main()
//{
//	parent p;
//	child ch;
//	who_are_you(ch);
//	who_are_you(p);
//	return 0;
//}